package org.hard.model.structure.decorator;

import java.util.Locale;

/**
 * @author: 王林博
 * @date: 2023年07月13日 15:33
 *
 */
// 具体装饰必须在被封装对象上调用方法，不过也可以自行在结果中添加一些内容。
 // 装饰必须在调用封装对象之前或之后执行额外的行为
public class EncryptionDecorator extends DataSourceDecorator{

    public EncryptionDecorator(DataSource source) {
        super(source);
    }


    // // 1. 对传递数据进行加密。
    //// 2. 将加密后数据传递给被封装对象 writeData（写入数据）方法。
    @Override
    public void writeData(String data) {
        data = data.toUpperCase(Locale.ROOT);
        wrappee.writeData(data);
    }
    // // 1. 通过被封装对象的 readData（读取数据）方法获取数据。 43
    //// 2. 如果数据被加密就尝试解密。 44
    //// 3. 返回结果。
    @Override
    public String readData() {
        return wrappee.readData();
    }


}
